package inner;

/**
   局部内部类:
    如果一个类是定义在一个方法内部的，那么这就是一个局部内部类。
    “局部”：只有当前所属的方法才能使用它，出了这个方法外面就不能用了。

    小节一下类的权限修饰符：
    public > protected > (default) > private
    定义一个类的时候，权限修饰符规则：
    1. 外部类：public / (default)
    2. 成员内部类：public / protected / (default) / private
    3. 局部内部类：什么都不能写
 ----------------------------------------------------------
    局部内部类，如果希望访问所在方法的局部变量，那么这个局部变量必须是【有效final的】。
    备注：从Java 8+开始，只要局部变量事实不变，那么final关键字可以省略。
 */
public class Outer {

    public void methodOuter() {
       final int num = 20; // 所在方法的局部变量

        class Inner { // 局部内部类
//            int num=10;  //
            public void methodInner() {
                System.out.println(num); // 20  可以访问局部变量
            }
        }

        Inner inner = new Inner();  //之内在所属的方法内使用,出了就不能用了
        inner.methodInner();
    }

}
